package com.ruoyi.common.core.utils;

import java.io.IOException;

/**
 * @author shenli
 * @version v0.1.0
 * @since 2025/10/22 20:56
 */
public class SoundUtils {

  private SoundUtils() {
    throw new UnsupportedOperationException("这是一个实用程序类，不能实例化。");
  }

  /**
   * 播放指定路径的音频文件 根据不同操作系统选择不同的播放命令
   *
   * @param filePathName 音频文件的完整路径
   */
  public static void playLocalWav(String filePathName) {
    // 获取当前操作系统名称并转换为小写
    String os = System.getProperty("os.name").toLowerCase();
    try {
      // shenli 25-09-04 14:36 检查系统是linux 还是windows
      if (os.contains("win")) {
        // Windows系统下使用PowerShell播放音频
        // 使用cmd命令启动PowerShell，以最小化方式运行
        // 使用Media.SoundPlayer类同步播放音频文件
        Runtime.getRuntime().exec("cmd /c start /min powershell -Command \"(New-Object Media.SoundPlayer '" + filePathName + "').PlaySync()\"");
      } else if (os.contains("linux")) {
        // Linux系统下使用aplay命令播放音频
        Runtime.getRuntime().exec("aplay " + filePathName);
      }
    } catch (IOException e) {
      // 捕获IO异常并转换为运行时异常抛出
      throw new RuntimeException(e);
    }
  }

}
